﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using HHL_Acc;
using HHL_Acc.HHL_Util;
using HHL_DaoAcc.DataObject;
using HHL_Acc.HHL_DaoAcc.DataObject;
using System.Data;
using System.Data.SqlClient;

namespace HHL_Util
{
    public class CommonUtil
    {
        #region " Những hàm của hòa"

        public static String ConvertCurrencyToString(long current)
        {
            return String.Format("{0:0,0}", current);
        }

        public static long ConvertStringToCurrency(String strCurrency)
        {
            // Remove all comma
            try
            {
                return Int32.Parse(strCurrency.Replace(",", ""));
            }
            catch
            {
                return long.MinValue;
            }
        }


        public String FormatDateTime(DateTime date)
        {
            return String.Format("{0:dd/MM/yyyy}", date);
        }

        // Convert VNI Font To Unicode Font
        public static String ConvertVni2Unicode(string strInput)
        {
            if (strInput == null || String.Empty == strInput)
            {
                return null;
            }
            string c = "";

            bool db = false;

            int[] maAcii = new int[134]
                               {
                                   7845, 7847, 7849, 7851, 7853, 226, 7843, 227, 7841, 7855, 7857, 7859, 7861, 7863, 259,
                                   250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, 7871, 7873, 7875, 7877,
                                   7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, 7895, 7897, 7887, 245, 7885,
                                   7899, 7901, 7903, 7905, 7907, 417, 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929,
                                   7925, 273, 7844, 7846, 7848, 7850, 7852, 194, 7842, 195, 7840, 7854, 7856, 7858, 7860,
                                   7862, 258, 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872,
                                   7874, 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, 7886,
                                   213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, 7882, 221, 7922, 7926
                                   , 7928, 7924, 272, 225, 224, 244, 243, 242, 193, 192, 212, 211, 210
                               };
            string[] Vni = new string[134]
                               {
                                   "aá", "aà", "aå", "aã", "aä", "aâ", "aû", "aõ", "aï", "aé", "aè",
                                   "aú", "aü", "aë", "aê", "uù", "uø", "uû", "uõ", "uï", "öù", "öø", "öû", "öõ",
                                   "öï", "ö", "eá", "eà", "eå", "eã", "eä", "eâ", "eù", "eø", "eû", "eõ", "eï",
                                   "oá", "oà", "oå", "oã", "oä", "oû", "oõ", "oï", "ôù", "ôø",
                                   "ôû", "ôõ", "ôï", "ô", "í", "ì", "æ", "ó", "ò", "yù", "yø", "yû", "yõ", "î",
                                   "ñ", "AÁ", "AÀ", "AÅ", "AÃ", "AÄ", "AÂ", "AÛ", "AÕ",
                                   "AÏ", "AÉ", "AÈ", "AÚ", "AÜ", "AË", "AÊ", "UÙ", "UØ", "UÛ", "UÕ",
                                   "UÏ", "ÖÙ", "ÖØ", "ÖÛ", "ÖÕ", "ÖÏ", "Ö", "EÁ", "EÀ", "EÅ",
                                   "EÃ", "EÄ", "EÂ", "EÙ", "EØ", "EÛ", "EÕ", "EÏ", "OÁ", "OÀ", "OÅ",
                                   "OÃ", "OÄ", "OÛ", "OÕ", "OÏ", "ÔÙ", "ÔØ", "ÔÛ",
                                   "ÔÕ", "ÔÏ", "Ô", "Í", "Ì", "Æ", "Ó", "Ò", "YÙ", "YØ", "YÛ", "YÕ",
                                   "Î", "Ñ", "aù", "aø", "oâ", "où", "oø", "AÙ", "AØ", "OÂ", "OÙ", "OØ"
                               };

            string result = strInput;
            for (int i = 0; i < 134; i++)
            {
                result = result.Replace(Vni[i], Convert.ToChar(maAcii[i]).ToString());
            }
            return result;
        }

        // Convert Unicode Font To Vni Font
        public static String ConvertUnicode2Vni(string strInput)
        {
            if (strInput == null || String.Empty == strInput)
            {
                return null;
            }
            string c = "";

            bool db = false;

            int[] maAcii = new int[134]
                               {
                                   7845, 7847, 7849, 7851, 7853, 226, 7843, 227, 7841, 7855, 7857, 7859, 7861, 7863, 259,
                                   250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, 7871, 7873, 7875, 7877,
                                   7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, 7895, 7897, 7887, 245, 7885,
                                   7899, 7901, 7903, 7905, 7907, 417, 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929,
                                   7925, 273, 7844, 7846, 7848, 7850, 7852, 194, 7842, 195, 7840, 7854, 7856, 7858, 7860,
                                   7862, 258, 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872,
                                   7874, 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, 7886,
                                   213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, 7882, 221, 7922, 7926
                                   , 7928, 7924, 272, 225, 224, 244, 243, 242, 193, 192, 212, 211, 210
                               };
            string[] Vni = new string[134]
                               {
                                   "aá", "aà", "aå", "aã", "aä", "aâ", "aû", "aõ", "aï", "aé", "aè",
                                   "aú", "aü", "aë", "aê", "uù", "uø", "uû", "uõ", "uï", "öù", "öø", "öû", "öõ",
                                   "öï", "ö", "eá", "eà", "eå", "eã", "eä", "eâ", "eù", "eø", "eû", "eõ", "eï",
                                   "oá", "oà", "oå", "oã", "oä", "oû", "oõ", "oï", "ôù", "ôø",
                                   "ôû", "ôõ", "ôï", "ô", "í", "ì", "æ", "ó", "ò", "yù", "yø", "yû", "yõ", "î",
                                   "ñ", "AÁ", "AÀ", "AÅ", "AÃ", "AÄ", "AÂ", "AÛ", "AÕ",
                                   "AÏ", "AÉ", "AÈ", "AÚ", "AÜ", "AË", "AÊ", "UÙ", "UØ", "UÛ", "UÕ",
                                   "UÏ", "ÖÙ", "ÖØ", "ÖÛ", "ÖÕ", "ÖÏ", "Ö", "EÁ", "EÀ", "EÅ",
                                   "EÃ", "EÄ", "EÂ", "EÙ", "EØ", "EÛ", "EÕ", "EÏ", "OÁ", "OÀ", "OÅ",
                                   "OÃ", "OÄ", "OÛ", "OÕ", "OÏ", "ÔÙ", "ÔØ", "ÔÛ",
                                   "ÔÕ", "ÔÏ", "Ô", "Í", "Ì", "Æ", "Ó", "Ò", "YÙ", "YØ", "YÛ", "YÕ",
                                   "Î", "Ñ", "aù", "aø", "oâ", "où", "oø", "AÙ", "AØ", "OÂ", "OÙ", "OØ"
                               };

            string result = strInput;
            for (int i = 0; i < 134; i++)
            {
                result = result.Replace(Convert.ToChar(maAcii[i]).ToString(), Vni[i]);
            }
            return result;
        }

        public static void WriteToLogFile(string logMessage)
        {
            string strLogMessage = string.Empty;
            string strLogFile = CommonConstant.LOG_FILE_NAME;
            StreamWriter swLog;

            strLogMessage = string.Format("{0}: {1}", DateTime.Now, logMessage);

            if (!File.Exists(strLogFile))
            {
                swLog = new StreamWriter(strLogFile);
            }
            else
            {
                swLog = File.AppendText(strLogFile);
            }

            swLog.WriteLine(strLogMessage);
            swLog.WriteLine();

            swLog.Close();
        }

       
        #endregion

        #region "những hàm chức năng của hoàng"

        public static long TimeString2Number(String StrValue)
        {
            long kq;
            string[] split = StrValue.Split(new char[] {':'});
            kq = (int.Parse(split[0]))*60;
            kq = (kq + (int.Parse(split[1])))*60;
            kq = kq + (int.Parse(split[2]));
            return kq;
        }

        public static String Number2TimeString(int numSecond)
        {
            string kq;
            int hour, minute, second, temp;
            second = numSecond%60;
            temp = (numSecond - second)/60;
            minute = temp%60;
            hour = temp/60;
            kq = hour + ":" + minute + ":" + second;
            return kq;
        }

        public static String MakeStringID()
        {
            DateTime dt = DateTime.Now;
            String id = dt.Year + "" + dt.Month + "" + dt.Day + "" + dt.Hour + "" + dt.Minute + "" + dt.Second + "" +
                        dt.Millisecond;
            return id.ToString();
        }

        public static int MakeHour()
        {
            DateTime dt = DateTime.Now;
            return ((dt.Hour * 60 + dt.Minute) * 60) + dt.Second;
        }

        #endregion
    }
}